文章目录
  1. 删除MacOS X文件系统的附加属性@

删除MacOS X文件系统的附加属性@

场景:之前手贱,一不小心删除了Hdfs的一个目录。还好之前做了备份,但是只是备份整个电脑的,所以只将里面的关于HDFS的备份拿出来。

但是拿过来之后有个问题, 目录最后多了个@符号

1
2
3
4
5
6
> ll
drwxr-xr-x@ 4 icemimosa admin 136B 12 11 13:19 hadoop
drwxr-xr-x 4 icemimosa admin 136B 4 11 2016 hadoop01

## hadoop 目录是我从备份拷贝过来的
## hadoop01 是以前的,换了个名字

此时我启动HDFS的时候,死活启动不了。报错如下,怀疑是@符号导致的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2016-12-11 13:11:05,044 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid dfs.datanode.data.dir /usr/local/var/hadoop/dfs/data :
org.apache.hadoop.util.DiskChecker$DiskErrorException: Directory is not writable: /usr/local/var/hadoop/dfs/data
at org.apache.hadoop.util.DiskChecker.checkAccessByFileMethods(DiskChecker.java:193)
at org.apache.hadoop.util.DiskChecker.checkDirAccess(DiskChecker.java:174)
at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:157)
at org.apache.hadoop.hdfs.server.datanode.DataNode$DataNodeDiskChecker.checkDir(DataNode.java:2344)
at org.apache.hadoop.hdfs.server.datanode.DataNode.checkStorageLocations(DataNode.java:2386)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2368)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2260)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2307)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2484)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2508)
2016-12-11 13:11:05,046 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.io.IOException: All directories in dfs.datanode.data.dir are invalid: "/usr/local/var/hadoop/dfs/data/"
at org.apache.hadoop.hdfs.server.datanode.DataNode.checkStorageLocations(DataNode.java:2395)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2368)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2260)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2307)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2484)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2508)
2016-12-11 13:11:05,048 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2016-12-11 13:11:05,050 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:

解决(删除@符号):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看一下目录
> xattr -l hadoop

# 输出
com.apple.metadata:_kTimeMachineNewestSnapshot:
00000000 62 70 6C 69 73 74 30 30 33 42 2D 63 C3 7F 00 00 |bplist003B-c....|
00000010 00 08 00 00 00 00 00 00 01 01 00 00 00 00 00 00 |................|
00000020 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 11 |..|
00000032
com.apple.metadata:_kTimeMachineOldestSnapshot:
00000000 62 70 6C 69 73 74 30 30 33 41 BD DC 26 BF 00 00 |bplist003A..&...|
00000010 00 08 00 00 00 00 00 00 01 01 00 00 00 00 00 00 |................|
00000020 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 11 |..|
00000032
1
2
3
4
5
# 删除附加属性
> xattr -c hadoop

# ls一下
drwxr-xr-x 4 icemimosa admin 136B 12 11 13:19 hadoop

此时hdfs就能正常启动了,成功解决。

参考:
Mac OS X文件系统的附加属性@如何彻底删除

文章目录
  1. 删除MacOS X文件系统的附加属性@